home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / BASIC / 2905.ZIP / QWEZ.ZIP / MULTSAM2.BAS < prev    next >
BASIC Source File  |  1993-06-01  |  5KB  |  95 lines

  1. '***************************************************************************
  2. '**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES:    ****
  3. '***************************************************************************
  4. '**** For QB4.5 unenhanced version use QBUNEN.QLB                       ****
  5. '**** For BASIC 7.+ unenhanced version use PDSUNEN.QLB                  ****
  6. '**** For VBDOS 1.0 unenhanced version use VBUNEN.QLB                   ****
  7. '**** For QB4.50 enhanced version use QBALL.QLB or QBNER.QLB            ****
  8. '**** For BASIC 7.1 enhanced version use PDSALL.QLB or PDSNER.QLB      ****
  9. '**** For VBDOS 1.0 enhanced version use VBALL.QLB or VBNER.QLB         ****
  10. '**** Load QB, QBX, or VBDOS with the /L option and the correct library ****
  11. '***************************************************************************
  12. DECLARE SUB MULTINPT (S%, TOFLD%, OPTION$, FF%, RKEY%, RTRN$(), SF%)
  13. DECLARE SUB SETINPT (SCRN%, DISPLAYLEN%, EXIT$, HOTCOL%)
  14. DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
  15. DECLARE SUB PRINTW (TEXT$, R%, LC%)
  16. DECLARE SUB SETWIND (FST%, S%, SH%, NH%, BRKT%)
  17. DECLARE FUNCTION MOUSEON% (ISON%)
  18. DECLARE SUB BOXW (TR%, LC%, WD%, NR%, BORDER%)
  19. DECLARE SUB UPDATEFIELD (SCRN%, FLD%, TEXT$)
  20. DECLARE SUB INPTINIT (DTYPE%, ISDOT%, AT1%, BLNK%, MS%)
  21. DECLARE SUB MAKEFIELD (SCRN%, FLD%, SCODE%, STR%, SLC%, SWD%, SBASEATTR%, SACTATTR%, MATTR%, RES$, EXTO$, HOTPOS%, CURPOS%, BRACKET%)
  22. '****************************************************************************
  23.  
  24. CALL SETWIND(1, 1, 7, 0, 15)            ' INITIALIZE WINDOW MEMORY
  25. CALL INPTINIT(1, 1, 1, 1, 1)            ' INITIALIZE INPUT MEMORY
  26. JUNK% = MOUSEON%(1)                     ' TURN THE MOUSE ON
  27. COLOR 7, 0: CLS                         ' BLANK THE SCREEN
  28. DIM RTRN$(6)                            ' For the six fields/buttons
  29. '---------------------------------------------------------------------------
  30. ' SETINPT MUST BE CALLED FOR EACH MULTI-FIELD INPUT SCREEN
  31.  
  32. CALL SETINPT(1, 25, "E", 127)
  33. FOR X% = 1 TO 4
  34.   READ CODE%, TR%, LC%, WD%
  35.   CALL MAKEFIELD(1, X%, CODE%, TR%, LC%, WD%, 15, 15, 15, "", "", 0, 1, 0)
  36. NEXT
  37.  
  38. ' Auto-exit - auto advance - numeric with no decimal places
  39. DATA 11000,5,5,4                               : 'FIELD 1
  40. ' Auto-exit - auto advance - numeric with no decimal places
  41. DATA 11000,7,5,4                               : 'FIELD 2
  42. ' Protected - numeric with no decimal places
  43. DATA 100,9,5,5                                 : 'FIELD 3
  44. ' Alpha / numeric
  45. DATA 7,11,5,15                                 : 'FIELD 4
  46.  
  47. ' Make the "button" fields
  48. MAKEFIELD 1, 5, 30007, 14, 13, 6, 112, 15, 15, "", "", 0, 3, 1    ' OK
  49. RTRN$(5) = "< OK >"
  50. MAKEFIELD 1, 6, 30007, 14, 58, 10, 112, 15, 15, "", "", 0, 3, 1   ' CANCEL
  51. RTRN$(6) = "< CANCEL >"
  52. '----------------------------------------------------------------------------
  53. ' MAKE A WINDOW.  PRINT INSTRUCTIONS
  54.  
  55. CALL MAKEWIND(1, "@Auto-exit fields used to update a protected field", 1, 1, 80, 16, 112, 102)
  56. CALL PRINTW("Auto-exit and auto advance with numeric input", 2, 15)
  57. CALL PRINTW("+", 3, 5)
  58. CALL PRINTW("Auto-exit and auto advance with numeric input", 4, 15)
  59. CALL PRINTW("Protected Field", 6, 15)
  60. CALL PRINTW("Alpha-numeric", 8, 24)
  61. CALL PRINTW("-------- Button fields ---------", 11, 23)
  62. CALL BOXW(10, 8, 14, 3, 2)
  63. CALL BOXW(10, 55, 14, 3, 2)
  64. '----------------------------------------------------------------------------
  65.  
  66. TOFLD% = 1: FROMFLD% = 0              ' START IN FIELD 1.  PRINT ALL
  67.                                       ' FIELDS.
  68. '----------------------------------------------------------------------------
  69. DO
  70.   CALL MULTINPT(1, TOFLD%, "U", FROMFLD%, RKEY%, RTRN$(), SELECTION%)
  71.  
  72.   IF FROMFLD% = 1 OR FROMFLD% = 2 THEN                ' IS IT FIELD 1 OR 2 ?
  73.     RTRN$(3) = STR$(VAL(RTRN$(1)) + VAL(RTRN$(2)))    ' ADD FIELD 1 + 2
  74.     IF RTRN$(1) + RTRN$(2) = "" THEN RTRN$(3) = ""
  75.     CALL UPDATEFIELD(1, 3, RTRN$(3))                  ' UPDATE FIELD 3 ONLY
  76.   END IF
  77.  
  78.   ' Make mouse release on OK and CANCEL same a ENTER
  79.   IF TOFLD% > 4 AND RKEY% = 100 THEN FROMFLD% = TOFLD%: RKEY% = 13
  80.  
  81.   ' Make ESC same as ENTER on CANCEL
  82.   IF RKEY% = 27 THEN FROMFLD% = 6: RKEY% = 13
  83.  
  84.   ' Do until OK or CANCEL selection is made via mouse, ENTER or SPACE BAR.
  85.  
  86. LOOP UNTIL FROMFLD% > 4 AND (RKEY% = 13 OR RKEY% = 32)
  87.  
  88.   ' OK or CANCEL selected
  89.   LOCATE 18, 1
  90.   IF FROMFLD% = 5 THEN PRINT "OK EXITED" ELSE PRINT "CANCEL/ESC EXITED"
  91.  
  92.  
  93.                                    
  94.  
  95.